BM43 包含min函数的栈
https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49
主要的核心操作就是 minStack 必须和普通 Stack 那样,每插入一个元素就塞一个最小元素进去,因为它们的顺序是一样的,所以不用担心乱序的问题
package main
import (
"math"
)
var (
stack []int
minStack = []int{math.MaxInt64}
)
func Push(node int) {
stack = append(stack, node)
minNode := min(minStack[len(minStack)-1], node)
minStack = append(minStack, minNode)
}
func Pop() {
stack = stack[:len(stack)-1]
minStack = minStack[:len(minStack)-1]
}
func Top() int {
return stack[len(stack)-1]
}
func Min() int {
return minStack[len(minStack)-1]
}
func min(a, b int) int {
if a > b {
return b
}
return a
}